/*
 * Piso.h
 *
 */

#ifndef PISO_H_
#define PISO_H_

#include <signal.h>
#include <stdlib.h>
#include <list>
#include "Seniales/SignalHandler.h"
#include "Pipes/Pipe.h"
#include "Constantes.h"
#include "Utils.h"
#include "Log.h"
#include "Persona.h"
#include "Llamada.h"

using namespace std;

class Piso : public EventHandler {

private:

	int nroPiso;
	int cantidadPisos;
	Pipe* pipeLlamadas;
	bool realizarLlamadas;
	Pipe* pipePersonasSuben;
	Pipe* pipePersonasBajan;
	int totalPersonas;

	Persona construirPersona();
	void realizarLlamada(const Persona persona);
	int calcularPisoDestino();

public:

	Piso(int nroPiso, int cantidadPisos, Pipe* pipeLlamadas, Pipe* pipePersonasSuben, Pipe* pipePersonasBajan );
	virtual ~Piso();
	int inicializar();
	void generarLlamadas();
	int handleSignal ( int signum );

};

#endif /* PISO_H_ */
